1
Mapeo entre Hardware y Software: Versiones de Capacidad de Computación
AI021Lesson 5
00:00

La Capacidad de Computación (CC) actúa como el puente de versión entre arquitectura virtual (PTX) y arquitectura real (SASS/Binario). Los desarrolladores usan nvcc para dirigirse a plataformas específicas, que van desde plataformas de escritorio/servidor hasta plataformas embebidas, en modelos de sistema operativo como Linux de 64 bits (LP64) o Windows de 64 bits (LLP64).

1. Arquitecturas Virtuales frente a Reales

La herramienta CUDA soporta arquitecturas de GPU de las dos últimas versiones principales, referenciadas en Tabla 29: Soporte de Funcionalidades según Capacidad de Computación (7.5 a 12.x). Definimos mapeos usando banderas como: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu. Para objetivos futuros, se usan banderas como nvcc -arch=sm_100 o variantes especializadas como nvcc -arch=sm_100a se utilizan.

2. Jerarquía de Macros

El compilador usa __CUDA_ARCH__ para ramificar el código. La macro __CUDA_ARCH__ solo está definida en código de dispositivo (por ejemplo, __device__, __global__). Se proporciona un control más granular mediante __CUDA_ARCH_SPECIFIC__ y __CUDA_ARCH_FAMILY_SPECIFIC__. Algunas funciones, como Memoria Compartida Distribuida o cargas específicas valores NaN, requieren Capacidad de Computación 9.0+ o Capacidad de Computación 10.0 y posteriores.

3. Límites y Restricciones Numéricos

La precisión varía según la CC; por ejemplo, el manejo de valores subnormales asegura que $2^{-16382} \approx 3.36 \cdot 10^{-4932}$. Límites de hardware como CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 o la directiva .maxnreg de PTX se aplican estrictamente según la versión de CC objetivo.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>